perm filename S3.F4[LK,LCS] blob sn#157028 filedate 1975-05-03 generic text, type T, neo UTF8
00100	C   SCORB.F4   2ND HALF OF SCORE.
00200		SUBROUTINE RUNIT
00300		COMMON /Q/ BNW(100),NWZ /INS/INST(27),BG(60) /TYP/SOS,JOUT
00400		1 ,LN,ITYP,TPALN,JED
00500		COMMON/A/ V(2000),ROFF(27),NP(27),PCH(27,32),
00600		1 RDEV(27),IPT(27,31),XT(27),OTH(20,16),SCAL(101)
00700		1 ,P1(27),JFM(4),COPY(30),IFM(80)
00800		1 ,FINM(6),TINST(5),ENFI(5),TEDIT(4),INVIS(27)
00900		DIMENSION IV(2000),IT(30),IOUT(70),JPT(837),NCNT(27,32)
01000	C   WITH VX,IOUT AT 70 AND IFM AT 80 OK FOR ONLY 
01100	C   40 LIT CHARS + 30 PARAMS PER INST.
01200	C   60 BG TIMES AVAILABLE.  FOR INSTS AND INSERTS AND EDITS.
01300		COMMON P(30),J,L,CNT(27),BT,PL(48),MK,DF,DUR(27)
01400		1 ,IQ(27),KL,X,ZPAR,KA,LK,NNUM,JJ,JA,ISUB,NFLG,IXX,ISEMI,IQT
01500		1 ,INP(144),VX(70),ISCA(12),IDAT(11),IAMP,K,KN,M,ML,CODE,IBLA
01600		COMMON/B/MOT,PR,T5,NINS,I,TP,RA,KZY,NWX,INONLY,MX,
01700		1 Y,Z,ISLAC,MZ,N,IDALL,JC,JG,RB,IJ,IX,BW,KB,NL,RC,W,
01800		1 CHN,YY 
01900		1 /D/TF,AMPFAC,OP1,DURX,IXIN,IFLNM
02000		1 /C/T,NWZZ,IT3,T6,NW,TDUR,A,T2,T4,IL,
02100		1 KODE,RD,LP,TBG,AC,NPA,BX,IDF,PM,NM,PAR,PX2,T1,NPAR,
02200		1 VIJ2
02300	C  /C/=26
02400		EQUIVALENCE (PP1,P(1)),(P(2),P2),(P(3),P3),(P(4),P4),
02500		1 (VX1,VX(1)),(INP1,INP(1)),(PL4,PL(4)),(IPT,JPT)
02600		1 ,(VX2,VX(2)),(VX3,VX(3)),(NCNT,PCH),(VX4,VX(4))
02700		1 ,(VX5,VX(5)),(VX,IOUT),(IFM3,IFM(3))
02800		1 ,(IT,INP(27)),(V,IV),(PLAY,ISCA(7)),(IFM2,IFM(2))
02900		1 ,(IFM4,IFM(4))
03000	      DATA SCAL/'C/8','CS/8','D/8','DS/8','E/8','F/8','FS/8','G/8',
03100		1 'GS/8','A/8','AS/8','B/8','C/4','CS/4','D/4','DS/4','E/4',
03200		1 'F/4','FS/4','G/4','GS/4','A/4','AS/4','B/4','C/2','CS/2',
03300		1 'D/2','DS/2','E/2','F/2','FS/2','G/2','GS/2','A/2','AS/2',
03400		1 'B/2','C','CS','D','DS','E','F','FS','G','GS','A','AS',
03500		1 'B','C*2','CS*2','D*2','DS*2','E*2','F*2','FS*2','G*2',
03600		1 'GS*2','A*2','AS*2','B*2','C*4','CS*4','D*4','DS*4','E*4',
03700		1 'F*4','FS*4','G*4','GS*4','A*4','AS*4','B*4','C*8','CS*8',
03800		1 'D*8','DS*8','E*8','F*8','FS*8','G*8','GS*8','A*8','AS*8',
03900		1 'B*8','R','F1','F2','F3','F4','F5','F6','F7','F8','F9',
04000		1 'F10','F11','F12','F13','F14','F15','END'/,I1X/'1X'/
04100		1 ,IFM(1)/'('/,IFM2/'1XA5,'/,IFCOM/5H', ',/,IA1/'A1,'/
04200		PR=0
04300	2337	T=0
04400		DO 1107 K=1,30
04500	1107	PL(K)=1.
04600	C  2/74--WAS AT 17300/1   SETS DEFAULT OUTPUT MODE TO 1.
04700		IF(ITYP)GO TO 23371
04800		END FILE 21
04900		DATA ENFI /25H(' INPUT ON FOR21.DAT '/)/
05000		TYPE ENFI
05100	C  PUTS AWAY TYPED IN DATA. TO REUSE, EDIT FOR21.DAT.
05300	23371	IF(SOS)WRITE(JOUT,902)
05400	C   WRITES A BLANK LINE
05500		NWZZ=0
05600		IAMP=0
05700		IT3=0
05800		K=1
05900	      IX=0  
06000		BG(NINS+1)=19999.
06100	4011	IF(CNT(K))GO TO 5011
06200	6011	IF(K.EQ.KZY)GO TO 4337
06300		K=K+1
06400		GO TO 4011
06500	5011	L=V(I-1)/(-9900.)
06600		IF(L.EQ.1)I=I-1
06700		V(I)=CNT(K)
06800		V(I+1)=P(K)
06900		V(I+3)=-44.
07000		I=I+5
07100		IF(P(K).EQ.980000.)I=I-4
07200		KL=I
07300		REWIND 1
07400		ICT=IPT(K,1)
07500		CALL IFILE(1,ICT)
07600	9011	L=I+6
07700		READ(1,7011)(V(M),M=I,L)
07800	C   READS "CONDUCT" AND "RHYTHM" (TAP) DATA.
07900		IF(V(L).EQ.999.)GO TO 8011
08000		I=L+1
08100		GO TO 9011
08200	8011	IF(P(K).NE.980000.)GO TO 6337
08300		DO 7337 K=L,I,-1
08400	7337	IF(V(K).NE.999.)GO TO 8337
08500	8337	I=K-1
08600		V(I)=0
08700		V(I+1)=V(K)
08800		V(I+2)=V(K)
08900	C   K WAS I-1 ABOVE.
09000		I=I+3
09100		V(KL+1)=I-KL-1
09200	C  ABOVE RESETS WORDCOUNT FOR 'CONDUCT' DATA.
09300		GO TO 4337
09400	6337	DO 5337 M=I,L
09500		KN=M
09600	5337	IF(V(M).EQ.999.)GO TO 3337
09700	3337	I=KN
09800		KN=I-KL
09900		V(KL-1)=KN
10000		V(KL-3)=KN+3
10100		GO TO 6011
10200	7011	FORMAT(7F)
10300	4337	IF(V(I-1).EQ.-9900.-BY)I=I-1
10400		V(I)=-19899.
10500	      PP1=0
10600	      T6=10000.   
10700	      DO 2118 K=1,NINS  
10800		ROFF(K)=0
10900	C********* FEB 17,71
11000		M=NP(K)
11100	      IT(K)=0 
11200		IPT(K,31)=0
11300		NCNT(K,31)=1
11400		DO 2118 L=1,M
11500		NCNT(K,L)=1
11600	2118	IPT(K,L)=0
11700		DO 5013 K=1,IXIN
11800	5013	X=RAND(0.0,0.0)
11900		REWIND 1
12000		IF(MX)CALL OFILE(1,ISLAC)
12100	      NW=1    
12200		NWX=0
12300	      TDUR=0
12400		A=0
12500	      T2=1. 
12600	      T4=1. 
12700	      T5=0  
12800		J=1
12900	      MK=0  
13000	C   IS THE ABOVE NEEDED?
13100		IF(MX.NE.3)GO TO 40021
13200		K=4
13300	10023	N=AMOD(V(K),100.0)/-11.
13400	C  AMOD NEEDED BECAUSE CODE # MAY HAVE -100 FOR DF OR -200 FOR SUBR.
13500		IF(N.EQ.2)GO TO 77
13550		IF(N.EQ.3)GO TO 77
13575		IF(N.NE.4)GO TO 10021
13600	77	IF(V(K-2).LT.10000.)GO TO 10021
13700		J=V(K+1)
13800		IF(J.EQ.1)GO TO 10024
13900		IF(N.NE.3)GO TO 177
13950		IF(V(K+J+1).EQ.101.)J=J-1
14000	177	N=V(K-2)
14100		L=N/10000
14200		M=N-L*10000
14300		TYPE 10022,INST(L),M,J
14400	10024	K=K+ABS(V(K-1))
14500	10021	K=K+1
14600		IF(K.LT.I)GO TO 10023
14700	40021	IF(MZ.NE.-4)GO TO 1002
14800		N=1
14900	40022	K=N+1
15000		IF(N.GT.I)CALL EXIT
15100		X=V(N)
15200		IF(X.EQ.-199.)GO TO 40024
15250		IF(X.EQ.-99.)GO TO 40024
15300		IF(X.GE.0)GO TO 40023
15400		PRINT 4002,X
15500		N=N+1
15600		GO TO 40022
15700	40024	J=N+1
15800		GO TO 40025
15900	C  FOR 'SECTIONS'
16000	40023	J=ABS(V(K))+K-1
16100	40025	PRINT 4002,(V(K),K=N,J)
16200		N=J+1
16300		GO TO 40022
16400	10022	FORMAT(1XA5,' P',I2,'  HAS ',I3,' ITEMS.')
16500	4002  FORMAT(10F12.3)
16600	1002	IF(IDALL)GO TO 600
16700		X=DUR(IDALL)
16800		DO 2002 K=1,NINS
16900	2002	IF(DUR(K))DUR(K)=X
     

00100	C ***** SORTER *************************  
00200	C  *******  OUTPUT LOOP FROM HERE ON  ********
00300	600      IL=0     
00400	C********** BELOW IS FOR 'SECTIONS'
00500		KODE=0
00600		NWX=NWX+1
00700	      MK=MK+1     
00800	      Y=BNW(NW)   
00900	723      IL=IL+1  
01000	3723      Z=V(IL)     
01100	      IF(Z.EQ.-19899.)GO TO 732
01200	      IF(Z.NE.-9900.-Y)GO TO 723     
01300	C********** BELOW IS FOR 'SECTIONS'
01400		IF(V(IL-2).EQ.-199.)KODE=IV(IL-1)
01500	2723      IL=IL+1   
01600	729	K=IL+2
01700		MOT=V(IL+1)
01800		RD=V(K)
01900		IF(RD.EQ.-67.)GO TO 3726
02000		RB=V(IL)
02100	C************ DOWN TO 4150 IS FOR 'SECTIONS'
02200		IF(RB.NE.-99.)GO TO 4150
02300		KODE=IV(K-1)
02400	2160	IF(KODE.EQ.0)GO TO 723
02500	  	IF(MZ)WRITE(JOUT,9150),KODE
02600		KL=Y/10000.
02700		RB=Y+KL*10000.
02800		DO 5150 KL=1,I
02900		IF(V(KL).NE.-199.)GO TO 5150
02950		IF(IV(KL+1).NE.KODE)GO TO 5150
03000		IV(K-1)=0
03100	C  WHEN 'PLAY' HAS BEEN FOUND, INDENTIFIER CHNGED TO 0
03200		RD=V(KL+2)+9900.
03300		DO 6150 L=KL+2,I
03400		M=V(L)/(-9900.)
03500		IF(M.NE.1)GO TO 6150
03600		RA=RB+RD-V(L)-9900.
03700		V(L)=-9900.-RA
03800	C  UPDATES BG TIMES INSIDE SECTION.
03900		CALL BGSORT(RA)
04000	C7150	IF(RA.EQ.BNW(KA))GO TO 6150
04100	C  UPDATES LIST OF CHANGE TIMES.
04200	6150	IF(V(L).EQ.-299.)GO TO 160
04300	5150	CONTINUE
04400	160	IL=1
04500		GO TO 3723
04600	C***********  ABOVE IS FOR 'SECTION' REPEATS
04700	4150	LK=RB/10000.+.2
04800		IF(LK.GE.98)GO TO 7700
04900		LP=RB-LK*10000
05000	C   LK=INST #   LP=PARAM #
05100		LN=IPT(LK,LP)
05200		IPT(LK,LP)=IL+2
05300		IF(RD.EQ.-66.)GO TO 726
05400		IF(RD.EQ.-55.)GO TO 1726
05450		IF(RD.EQ.-56.)GO TO 1726
05500		IF(RD.EQ.-23)GO TO 6700
05600	
05700	2727	ML=IPT(LK,LP)
05800		IF(MOT.GT.0)GO TO 3727
05900	C  USE NEG WDCNT FOR 'ALL'
06000		DO 4727 KL=LK+1,NINS
06100		IF(NP(KL).GE.LP)GO TO 277
06150		IF(LP.LT.31)NP(KL)=LP
06200	277	IPT(KL,LP)=-(LK+(LP-1)*KZY)
06300		NCNT(KL,LP)=10000
06400	4727	IF(DUR(KL))DUR(KL)=1000.
06500	C  ASSUMES THAT DURATIONS ARE SET IN 'NOTES'.
06600	C  AFTER 'ALL' IS USED ONCE IT WORKS LIKE DUPL OR REP.
06700		GO TO 727
06800	C 'MOVE' WITH 'ALL' KEEPS ORIGINAL TIME DATA REGARDLESS OF BG TIMES.
06900	3727	IF(V(IL).NE.V(LN-1))GO TO 727
06950		IF(LN.EQ.0)GO TO 727
07000		DO 1727 L=1,NINS
07100		DO 1727 KL=1,NP(L)
07200		IF(LN.NE.IPT(L,KL))GO TO 1727
07300		NCNT(L,KL)=10000
07400	C ******* JAN 29,70
07500		IPT(L,KL)=ML
07600	C RESETS POINTERS FOR DUPL AND REP INSTS.
07700	C *** 'ALL' WILL NOT WORK WITH RAN TF.!!!!!*******FEB 21,73
07800	1727	CONTINUE
07900	727	NCNT(LK,LP)=10000
08000	C******** MAY 13,71 RHY REP. FEATURE OMITTED.
08100	2150	IF(MOT)MOT=-MOT
08200		IL=IL+MOT+1
08300	3150	IF(V(IL))GO TO 3723
08400		GO TO 729
08500	726	RB=V(IL+3)
08600		K=RB/10000.
08700		L=RB-K*10000
08800		IPT(LK,LP)=-(K+(L-1)*KZY)
08900		GO TO 2727
09000	3726	LK=V(IL)
09100		M=V(K+1)
09200		KL=NP(M)
09300		DO 4726 L=1,KL
09400		IPT(LK,L)=IPT(M,L)
09500		IF(IPT(M,L).NE.0)NCNT(LK,L)=10000
09600	C****** JUN 29 71  (LK,L) WAS (L,K)....???????
09700	4726	CONTINUE
09800		IPT(LK,31)=IPT(M,31)
09900		K=0
10000		GO TO 2150
10100	C   ABOVE IS FOR DUPLICATION ROUTINE   NEXT ADJUSTS TIMES FOR 'RTAP'
10200	6700	KL=IL+V(IL+1)+1.3
10300		RC=V(K-2)
10400	1770	IF(V(KL))GO TO 700
10500	2700	KL=KL+V(KL+1)+1.3
10600		GO TO 1770
10700	700	KL=KL+1
10800		IF(Z.NE.V(KL-1))GO TO 2700
10850		IF(V(KL).NE.RC)GO TO 2700
10900		KL=KL+3
11000		KN=IL+3
11100		LN=V(KN)+.3
11200		DO 3700 L=1,LN,2
11300		RA=V(L+KN)
11400		KA=V(L+KN+1)+.3
11500		RB=0
11600		DO 4700 LP=1,KA
11700	4700	RB=RB+V(KL+LP)
11800		DO 5700 LP=1,KA
11900	5700	V(KL+LP)=V(KL+LP)/RB*RA
12000		V(KL+KA)=V(KL+KA)+.00030
12100	3700	KL=KL+KA
12200		GO TO 2150
12300	
12400	C  BELOW FOR 'TEMPO' SETUP
12500	7700	T2=V(IL+4)
12600		T1=V(IL+3)
12700		TBG=Y
12800		TDUR=V(IL+2)
12900		CALL SQYY(AC,T1,T2,TDUR)
13000	8700	IF(TDUR.EQ.0)TDUR=10000.
13100		T5=1.
13200		T6=TBG+TDUR
13300		IT3=1.
13400		IF(LK.EQ.98)IT3=IL+2
13500		T4=1.
13600		GO TO 2150
13700	C*************** ANY WDCNTS DOWN FROM HERE. *********
13800	C   NEXT ADJUSTS 'MOVE' TIMES IF BG IS AT A NOTE NUMBER.
13900	1726	IF(V(IL-1).GT.-19000.)GO TO 2727
14000		RA=BT
14100		K=IL-1
14200	2726	V(K)=-9900.-RA
14300		ISUB=-1
14400		L=K+5
14500		RB=V(L)+V(L-1)
14600		V(L-1)=RA
14700		K=K+V(K+2)+2
14800		IF(V(K).GT.-19000.)GO TO 2727
14850		IF(V(K+1).NE.V(IL))GO TO 2727
14900		IF(V(K).NE.-9900.-RB)GO TO 2727
15000		RA=RA+V(L)
15100		CALL BGSORT(RA)
15200		GO TO 2726
15300	C  CONVERTS BG TIME OF NOTE NUM TO REAL TIME.  DOESN'T WORK WITH -66!
15400	C   NOW WE BEGIN ON!! NOTE NUM. NOT AFTER NOTE NUM.
15500	732	DO 2606 K=NW,NWZ
15600	2606	BNW(K)=BNW(K+1)
15700		NWZ=NWZ-1
15800		IF(NWZ.EQ.0)GO TO 2111
15900		IF(NWZZ.EQ.1)GO TO 5111
16000		NWZZ=1
16100		IF(NWZ.EQ.1)GO TO 1111
16200		DO 3111 K=1,NWZ
16300		IF(BNW(K).LT.1000.)GO TO 3111
16400		X=BNW(NWZZ)
16500		BNW(NWZZ)=BNW(K)
16600		BNW(K)=X
16700		NWZZ=NWZZ+1
16800	3111	CONTINUE
16900	5111	IF(NWZZ.EQ.NWZ)GO TO 1111
17000		L=NWZZ+1
17100		X=BNW(NWZZ)
17200		DO 4111 K=L,NWZ
17300		IF(BNW(K).GT.X)GO TO 4111
17400		RA=BNW(K)
17500		BNW(K)=X
17600		X=RA
17700	4111	CONTINUE
17800		BNW(NWZZ)=X
17900		GO TO 1111
18000	111      FORMAT(1XA5,'.DAT',12X,'EDIT FILE NAME=',A5,8X,
18100		1'V ARRAY=',I4,'/2000',/' TEMPO FACTOR=',F6.2/)
18300	1023	FORMAT(/'  < ',A5,'.DAT  --  RANDOM NUMBER=',I6/1XA5)
18400	C********** BELOW IS FOR 'SECTIONS'
18500	9150	FORMAT(/3X'******* SECTION ',A1)
18600	2111	NWZ=-1
18700	C  ABOVE ORDERS BNW DATA TO SAVE TIME AT 1108 ON PG5.
18800	1111	IF(MZ.EQ.0)GO TO 1601
18900	      IF(NWX.NE.1)GO TO 1486
19000	      WRITE(JOUT,111)ISLAC,IFLNM,I,TF
19100	C*********** JUNE 1,71
19200	C********** BELOW IS FOR 'SECTIONS'
19300	1486	IF(KODE.NE.0)WRITE(JOUT,9150),KODE
19400		K=NWX-1
19500	C*********** JUNE 1,71
19600	        IF(NWX.LE.1)GO TO 377
19650		IF(IT(J).NE.-3)WRITE(JOUT,3154),K,Y  
19700	377	IF(IT(J).EQ.-3)WRITE(JOUT,5154),K,BX,INST(J) 
19800	C*********** JUNE 1,71    X 3     K'S
19900	
20000	      DO 602 K=1,NINS   
20100	48	LK=INST(K)
20200	C*********** JUNE 1,71
20300	  	IF(NCNT(K,31).EQ.10000)GO TO 477
20350		IF(NWX.GT.1)GO TO 602
20400	477	NCNT(K,31)=1
20500		IJ=IPT(K,31)
20600		X=0
20700		IF(IJ.NE.0)X=V(IJ+2)
20800	      WRITE(JOUT,5396),LK,X
20900		X=DUR(K)
21000	      IF(X.GT.10000.)GO TO 83 
21100	      WRITE(JOUT,8396),X     
21200		GO TO 602
21300	5396      FORMAT(5XA5,'  RANDOM TF =',F4.2,10X,'DURATION =',$) 
21400	7396      FORMAT('+',F5.0,' NOTES')    
21500	8396      FORMAT('+',F6.2,'"')   
21600	83      X=X-10000.
21700	      WRITE(JOUT,7396),X    
21800	602	CONTINUE
21900	715	IF(IT3.NE.1.)GO TO 1602
22000		RA=T1*TP
22100		RB=T2*TP
22200	      WRITE(JOUT,6154),RA,RB,TDUR  
22300	      IT3=0  
22400	1602	IF(NWX.EQ.1)GO TO 315
22500	      IF(IT(J).EQ.-3)GO TO 1108
22600	C*********** JUNE 1,71
22700	6154      FORMAT(' TMP=',F7.3,' TO',F8.3,' DURING',F6.2,' SECS.'/)
22800	7154	FORMAT(' ''CONDUCT'' FILE NAME = ',A5/)
22900	5154      FORMAT(/' << CHANGE',I3,' BEGINS ON NOTE',F5.0,1XA5,' >>'/)
23000	902      FORMAT(1XA5/)  
23100	3154      FORMAT(/' <<   BASIC TIME OF CHANGE',I3,' IS',F8.3,'" >>'/)
23200	4154      FORMAT(' THE FIRST',F9.4,'" ARE OMITTED'/)  
23300	C*********** JUNE 1,71
23400		IT(J)=IT(J)/10
23500		GO TO 1108
23600	315	IF(IT3.GT.1)WRITE(JOUT,7154),ICT
23700		IF(OP1.NE.0)WRITE(JOUT,4154),OP1 
23800	1601  IF(NWX.GT.1) GO TO 1108
24000		IF(TF.GT.10.)TF=TF/60.
24100		TF=1000./TF
24200		DO 6015 K=1,30
24300	6015	COPY(K)=-9900.
24400	C  INITS PARAM REPRESSION FEATURE.
24500	      IF(KB.EQ.0)GO TO 9926   
24600	      ML=NINS+1   
24700	      NL=NINS+KB
24800	      DO 9826 K=ML,NL   
24806	      BW=OTH(K-NINS,1) 
24810		IF(BW.NE.-99)GO TO 9826
24820		K=K-NINS
24830		GO TO 5741
24840	C  'INSERT -99;' COMES BEFORE 'PLAY;'
24850	9726	BW=19999.
24860		K=K+NINS
24870	9826	BG(K)=BW
25000	C   'OTH' INSERTS, WITH BG TIME IN SECONDS, CAN ONLY BE SET WITH TF=1   
25100	9926      DO 5015 K=1,NINS    
25200		IQ(K)=BG(K)*10000.
25300	      BG(K)=0
25400		INP(K)=0
25500	      P1(K)=0     
25600		IF(DUR(K).LT.10000.)DUR(K)=DUR(K)-.0001
25700	C******* FEB. 16,71   FOR ROUND-OFF NONSENSE
25800	5015      CNT(K)=0
25820		IF(MZ)WRITE(JOUT,1023),ISLAC,IXIN,PLAY
25900		IF(MX)WRITE(1,1023)ISLAC,IXIN,PLAY
26000	      BW=0 
26100		GO TO 500
     

00100	752      FORMAT(1X15A5)
00200	1108      M=0 
00300	      JC=0  
00400		IF(NWZ)GO TO 1740
00500	C  NWZZ IS SET AT 3111 IN SORTR.
00600		DO 740 K=1,NWZZ
00700	      X=BNW(K)    
00800		IF(X-.0001.GT.BT)GO TO 2740
00850		IF(X.LE.BW)GO TO 2740
00875		IF(BW)GO TO 2740
00900		IT(J)=IT(J)*10
01000	      NW=K  
01100	      GO TO 600   
01200	2740	IF(X.LT.1000.)GO TO 740
01250		IF(X-J*10000.NE.CNT(J)+1.)GO TO 740
01300	      X=BT+PR     
01400	      NW=K  
01500		BX=CNT(J)+1.
01600	      IT(J)=-3    
01700	      GO TO 600   
01800	740      CONTINUE 
01900	      IT(J)=0     
02000	1740      IF(J.LE.NINS)GO TO 31   
02100	7021      K=J-NINS
02200	      IF(JC.GT.0)K=JC   
02300	5740      IF(PP1.LT.OP1)GO TO 1752 
02400	5741  IF(MZ)WRITE(JOUT,752),(OTH(K,L),L=2,16)    
02500	      IF(MX)WRITE(1,752)(OTH(K,L),L=2,16)     
02600	C   IF TF .NE.1, ALL  INSERT TIMES MUST BE RESET
02700	C   IF FIRST PART OF NOTE LIST IS 'OMITTED', CHECK YOUR  'INSERTS'.  
02800		DO 17521 L=3,30
02900	17521	COPY(L)=-9900.
03000	C  SO THAT ALL PARAMS WILL PRINT,AFTER AN INSERT.
03100	1752	BG(K+NINS)=19999.
03200		OTH(K,1)=19999.
03210		IF(BW.EQ.-99)GO TO 9726
03300	      IF(JC.GT.0)GO TO 21     
03400	31      KL=1
03500	      IF(KB.EQ.0)GO TO 2031   
03600	      DO 1031 L=1,KB    
03700		K=L
03800	      X=OTH(K,1)-1000000.     
03900	      M=X/100000. 
04000	      IF(M.NE.J)GO TO 1031
04050		IF(IQ(J).NE.0)GO TO 1031   
04100	C   M=INST  
04200	      IF(X-M*100000.EQ.CNT(J)+1)GO TO 5740 
04300	1031	CONTINUE
04400		IF(J.GT.NINS)GO TO 500
04500	2031      CNT(J)=CNT(J)+1   
04600	      ICT=CNT(J)  
04700	C   INSERT TRAP HERE FOR OVERLAP OF RESTARTED INSTS.******
04800	      NPA=NP(J)   
04900	      PP1=P1(J)  
05000	      IF(BT.GE.DUR(J))GO TO 5174    
05100		IF(IQ(J).EQ.0)GO TO 200
05200		P2=-IQ(J)/10000.
05300		IQ(J)=0
05400		CNT(J)=-1
05500		ICT=-1
05600		GO TO 4203
05700	
05800	C   MK IS FLAG FOR RESTS
05900	200	MK=0
06000	      IF(BT.NE.0)GO TO 577
06025		IF(J.EQ.1)GO TO 203
06050	577	IF(IPT(J,1).EQ.0)GO TO 203    
06100		KN=IPT(J,1)-1
06200		IF(KN.GT.0)GO TO 12033
06300	12032	KN=JPT(-KN)
06400		IF(KN)GO TO 12032
06500		KN=KN-1
06600	C  FOR 'ALL' IN P32.  FOLLOWS UP ON POINTERS TO POINTERS!
06700	C   SOMEDAY PUT P1(32) IN WITH OTHER PARAMS BELOW!!!!
06800	12033	IJ=V(KN)
06900		IF(ABS(V(KN)).EQ.4.)GO TO 1203
07000	C   'IABS' IS FOR -4 USED WITH 'ALL'
07100	  	Z=(BT+9900.+V(KN-2))/V(KN+2)
07200	C******* FEB 19,71
07300		IF(Z.GT.1.)Z=1.
07400		Y=V(KN+3)
07500		X=(V(KN+4)-Y)*Z+Y
07600	C******* FEB 19,71
07700		GO TO 204
07800	1203	X=V(KN+3)
07900	204	Y=RAND(0.0,1.0)
08000		IF(Y-X)MK=-1
08100	
08200	203	DF=1.
08300	C   DF=DUTY FACTOR 
08400		DO 2155 L=2,NPA
08500		ISUB=0
08600	C  WHY DOES ISUB APPEAR AT 14700/5?
08700		IDF=0 
08800	C    IDF IS DUTY FACTOR FLAG
08900		IJ=IPT(J,L)
09000	12031	IF(IJ)IJ=JPT(-IJ)
09100		IF(IJ)GO TO 12031
09200	C  FOLLOWS UP ON POINTERS TO POINTERS!
09300		PM=1.
09400		IF(IJ.GT.1)GO TO 2157
09500		P(L)=0
09600		GO TO 21551
09700	C 7/73
09800	2157	LN=IJ+2
09900		NM=ABS(V(IJ-1))+LN-4
10000		NL=V(IJ)
10010		IF(NL.GT.-100)GO TO 272
10100		IF(NL.GT.-200)GO TO 372
10200		ISUB=-1
10300		NL=NL+200
10400	C FOR SUBROUTINE FLAG
10500	372	IF(NL.GT.-100)GO TO 272
10600		IDF=-1
10700		NL=NL+100
10800	C  DEC.6,72  FINDS DUTY FACTOR PARAM
10900	272	VIJ2=V(IJ+1)
11000		KN=NL/(-11)
11100		IF(KN.EQ.0)GO TO 1100
11200		GO TO (61,62,62,62,65,65,67,68),KN
11300	1100	IF(VIJ2.EQ.1.)GO TO 1200
11400		ML=3
11500	1900	KA=1
11600		VX1=0
11700		DO 1156 K=LN,NM,ML
11800		VX(KA+1)=V(K)+VX(KA)
11900	1156	KA=KA+1
12000		X=RAND(0.0,1.)
12100		DO 1157 K=2,11
12200		IF(X.GT.VX(K))GO TO 1157
12300		KL=K-1
12400		IF(KN.EQ.7)GO TO 6157
12500		GO TO 1400
12600	1157	CONTINUE
12700	1400	LN=IJ+3*KL
12800	1462	RA=V(LN)
12900		IF(RA.EQ.10000.)GO TO 5174
13000	C   FOR "FINE" IN RLIST
13100		RB=V(LN+1)
13200		PAR=RAND(RA,RB)
13300	1300	IF(NL.NE.-1)PM=2.
13400	C  IF 2 THEN PRINTS A5
13500		GO TO 1155
13600	1200	PAR=V(IJ+2)
13700		GO TO 1300
13800	C   NEXT IS FOR SUBROUTINE AND QUAD CALLS
13900	61	IF(NL.LT.-12)GO TO 6100
14000	601	X=P2
14100	C  '.5' MAKES ALL SUBR PARAMS PRINTOUT.
14200		CALL SUBR
14300	CC 7/74 NOW SET DUR(J) =0 IN SUBR	IF(DF)GO TO 5174
14400	C* OUT--COLGATE  DF=-1 IN 'SUBR' WILL CAUSE 'END' FOR INST.
14500		IF(L.EQ.2)GO TO 4203
14600		IF(X.EQ.P2)GO TO 21552
14700		PP2=P2
14800		PR=P2
14900		GO TO 21552
15000	C  ABOVE IS FOR P2 CHANGES IN SUBROUTINE
15100	C  TF,TEMPO,CONDUCT WILL AFFECT P2 ONLY WHEN P2 CALLS THE SUBR.,
15200	C  ALL 'TEMPO' CHANGES WILL BE IGNORED!! (THEN DUR. IN SECS. MUST
15300	C  BE SET TO 'REAL TIME'.)
15400	
15500	C   NEXT IS FOR QUAD ROUTINES
15600	6100	CALL QUAD(NL)
15700		GO TO 21552
15800	
15900	C   FOLLOWING IS FOR STRINGS OF VALUES.  
16000	62      KL=NCNT(J,L)+1
16100		IF(KL.GT.VIJ2)KL=1 
16200		IF(NL.EQ.-46)GO TO 677
16250		IF(NL.NE.-36)GO TO 162
16300	C   THIS PART FOR STRINGS OF RAND SELECTION
16400	677	LN=KL+IJ+1
16500		KL=KL+1
16600		IF(KL.GT.VIJ2)KL=1 
16700		NL=NL+45
16800	C   FOR NUMBERS ONLY SO FAR(THIS MAKES NL=-1.  FOR NOTES, =9)
16900	162	NCNT(J,L)=KL
17000		IF(NL.GT.-22)GO TO 1462
17100	C   JUMP RAND SELECTION
17200	      PAR=V(IJ+KL+1)
17300	C********** MAY 13,71 RHY REPEAT FEATURE OMITTED.
17400	C************************
17500		IF(KN.NE.3)GO TO 1155
17600	C*******JULY 16,71	IF(PAR.EQ.101.)GO TO 5174
17700		IF(PAR.EQ.10000.)GO TO 5174
17800		PM=2.
17900		IF(PAR.GT.100.)GO TO 777
17950		IF(PAR.GE.1.)GO TO 877
17975	777	PM=3.
18000	877	IF(PAR.EQ.85.)MK=-1
18100	      GO TO 5155  
18200	65	W=-9900.-V(IJ-3)
18300	C  W=BG TIME OF MOVE.
18400		X=ABS(V(IJ-1))
18500		IF(NL.EQ.-56)GO TO 977
18550		IF(NL.NE.-58)GO TO 771
18575	977	PM=2.
18600	771	Z=(BT-W)/VIJ2
18700	C  Z= % OF WAY THROUGH.
18800		IF(Z.GT.1.)Z=1.
18900		Y=V(LN)
19000		W=V(IJ+3)
19100		IF(X.EQ.7.)W=V(IJ+4)
19200		IF(NL.LT.-58)GO TO 16002
19300		PAR=(W-Y)*Z+Y
19400		IF(X.EQ.7.)GO TO 1600
19500		GO TO 1155
19600	C************** JUNE 1,71
19700	C   FOR "MOVX"
19800	C******** FEB/73
19900	C  THE .01 IS NEEDED FOR MOVE TO OR FROM 0.
20000	16002	PAR=RMOVX(W,Y,Z)
20100	C  SEE FUNCTION RMOVX 6/74 -- CAN'T HAVE -20→+20, ETC., -20→-40 OK.
20200	C  THIS NEEDS WORK!
20300		IF(X.NE.7.)GO TO 1155
20400		W=V(IJ+5)
20500		Y=V(IJ+3)
20600		X=RMOVX(W,Y,Z)
20700		GO TO 16003
20800	C  NEXT IS FOR MOVING RAND RANGES.
20900	C1600	PAR=(V(IJ+4)-Y)*Z+Y
21000	1600	W=V(IJ+3)
21100	C*********** BACK TO 65 IS NEW.   FEB. 15,71
21200		X=(V(IJ+5)-W)*Z+W
21300	C************ JUNE 1,71   
21400	16003	PAR=RAND(PAR,X)
21500		GO TO 1155
21600	67	LN=IJ+3
21700		NM=LN+VIJ2-1
21800		ML=1
21900		GO TO 1900
22000	4155	K=(PAR-9999.0)*100.+.1	
22100		P(L)=P(K)
22200		IF(L.NE.2)GO TO 772
22250		IF(K.EQ.2)P2=PX2
22300	C  PX2=LAST UNPROCESSED VALUE OF P2 (+ OR -) 7/74
22400	772	PM=PL(K)
22500		GO TO 21551
22600	C   ANY # OVER 9999. REPEATS ANOTHER PARAM.(9999.21 REPEATS P21)
22700	C 7/74  **** NOTE PROBLEMS OF P2 WITH SUBR, TEMPO, TF AND RAND. TF.
22800	C ALSO DF.  THE REAL TIME VALUE PRINTED MAY HAVE GONE THROUGH MANY
22900	C  CHANGES.  HENCE WHEN TRANSFERING THE VALUE TO OTHER PARAMS OR
23000	C  INSTS GREAT CARE MUST BE TAKEN TO BE SURE THE RESULTS ARE CORRECT.
23100	6157	LN=V(LN-1)
23200		DO 1068 K=1,KL
23300	1068	IF(K.LT.KL)LN=LN+V(LN)+1
23400	2068	PM=LN+1
23500		PAR=LN+V(LN)
23600		GO TO 5155
23700	68	KL=NCNT(J,L)
23800		IF(KL.EQ.0)GO TO 774
23850		IF(KL.NE.10000)GO TO 773
23875	774	KL=VIJ2
23900	773	PM=KL+1
24000		PAR=PM+V(KL)-1
24100		KL=PAR+1
24200		IF(V(KL).EQ.10000.)DUR(J)=BT
24300	C  'END' OR 'FINE' IN 'LIT' LIST.
24400		IF(V(KL).EQ.999.)KL=IJ+2
24500		NCNT(J,L)=KL
24600		GO TO 5155
24700	C ******* JAN 20  *************
24800	1155	IF(PAR.EQ.10000.)GO TO 5174
24900	C  TYPE 'END' OR 'FINE' AS LAST IN ANY STRING TO SET DURATION.
25000		IF(PAR.LE.9999.)GO TO 5155
25050		IF(PM.EQ.1.)GO TO 4155
25100	C****JULY 16,71 1155	IF((PAR.GT.9999.).AND.(PM.EQ.1.))GO TO 4155
25200	5155	P(L)=PAR
25300	21551	PL(L)=PM
25400		IF(ISUB)GO TO 601
25500		IF(L.EQ.2)GO TO 4203
25600	21552	IF(IDF.GE.0)GO TO 2155
25700		DF=PAR
25800	C DUTY FAC. IS ALWAYS % OF P2 - WHETHER CONSIDERING BASIC OR REAL TIME.
25900		IDF=0
26000	2155	CONTINUE
26100	
26200	9203      IF(KB.EQ.0)GO TO 1170     
26300	       NL=KB
26400	      DO 2203 K=1,KB    
26500	      X=OTH(NL,1) 
26600	      IF(X.LT.100000.)GO TO 2203     
26700	      L=X/100000.
26800	      Y=(X-L*100000.)/100.    
26900	      IX=Y  
27000	      JC=NL 
27100	      IF(J.NE.L)GO TO 2203
27150		IF(IX.EQ.ICT)GO TO 5203    
27200	2203  NL=NL-1     
27300	      GO TO 1170  
27400	4203      PR=P2 
27500		PX2=P2
27600	C TO SAVE THE UNPROCESSED P2 FOR 'P2 P2;' IN INPUT. 7/74
27700	      IF(T5.EQ.0)GO TO 7203   
27800		IF(IT3.LE.1)GO TO 6203
27850		IF(BT.LT.TBG+TDUR)GO TO 6203
27900	3155	IT3=IT3+3
28000		TBG=TBG+TDUR
28100		TDUR=V(IT3)
28200		IF(BT.GE.TBG+TDUR)GO TO 3155
28300		T1=V(IT3+1)
28400		T2=V(IT3+2)
28500		CALL SQYY(AC,T1,T2,TDUR)
28600	6203	RA=PR 
28700		IF(BT.EQ.TBG)XT(J)=T1
28800		K=IT3
28900		RC=0  
29000		RD=1  
29100		KA=1  
29200		RB=0  
29300		Z=TDUR+TBG-BT	
29400		X=T1  
29500		Y=T2  
29600		YY=AC
29700		CHN=TBG	
29800		ZZ=TDUR	
29900	      CALL ACCEL
30000	8203	P2=RA*RD    
30100	7203	P2=P2*T4
30200		X=P2*TF
30300	C  P2 IS KEPT WITHOUT TF*
30400		K=X+.5
30500		IF(X)K=X-.5
30600	72031	ROFF(J)=ROFF(J)+K-X
30700		IF(ABS(ROFF(J)).LT.1.)GO TO 7155
30800		Y=1.
30900		IF(ROFF(J))Y=-1.
31000		K=K-Y
31100		ROFF(J)=ROFF(J)-Y
31200	C  ROUND-OFF GAP WILL NOT EXCEED .001
31300	C*********** FEB 17,71
31400	7155	PP2=K/1000.
31500	C   AVOIDS ROUND-OFF PROBLEMS
31600	C AFTER ALL THIS P2 IN SUBR MAY NOT EQUAL PP2(REAL TIME) DF COMES LATER!
31700		IF(IPT(J,31).EQ.0)GO TO 6155
31800		IF(ICT)GO TO 1170
31900		X=V(IPT(J,31)+2)/2.
32000		Y=RAND(-X,X)
32100		IF(PP2.GE.0)GO TO 615
32200		MK=-1
32300		PP2=-PP2
32400	615	PP2=PP2-RDEV(J)+Y
32500		RDEV(J)=Y
32600	C  TOTAL RAND DEV. WON'T EXCEED P31
32700	C  SET P31 TO .0001 TO BRING VOICE BACK TO EXACT TIME(0 WON'T DO IT)
32800	
32900		K=PP2*1000.+.5
33000	C****** CHECK THIS OUT  1/10/72 :::::::
33100	61551	PP2=K/1000.
33200	C   NEVER MORE THAN .1( DEVIATION WITH RAN TF. (RTF=.05)
33300	6155	IF(ICT)GO TO 9203
33400		GO TO 2155
33500	5203      JD=Y*100-IX*100+.5  
33600	      IF(JD.GT.0)GO TO 3203   
33700		M=0
33800		P1(J)=PP1+PP2
33900	      GO TO 7021  
34000	3203      P(JD)=OTH(JC,2)     
34100		X=OTH(JC,3)
34200		IF(X.NE.1.)X=3.
34300	C   'EDITS' PRINT,NUM. OR 5 CHARS.
34400	      PL(JD)=X
34500	C   NEXT ADDED NOV.72  CHECK FOR SIDE AFFECTS !!!!! **********
34600		IF(JD.EQ.2)PP2=P2
34700	C   'TF' AND 'TEMPO' WILL NOT AFFECT PP2 'EDITS'.
34800	1170      IF(MK)GO TO 2022
34850		IF(PP2)GO TO 2022   
34900	
35000		ZPAR=PP1
35100		P1(J)=PP1+PP2
35200	C   ZPAR IS USED HERE WHEN OP1(OMIT) IS .GT.0. OMIT IS IN REAL TIME.
35300		LK=INST(J)
35400	2021	IF(PP1.LT.OP1)GO TO 2612
35500		IF(INVIS(J).LT.0)GO TO 2170
35600	C  ALL PARAMS WILL PRINT,1ST TIME WHEN USING 'OMIT'.
35700		IF(INONLY.GT.0)GO TO 1204
35800	C*********** MAY 16,71 ↑↑↑
35900	6021	IF(P(NPA).NE.COPY(NPA))GO TO 5021
35950		IF(PL(NPA).GT.1)GO TO 5021
36000	C******* MAY 25,71
36100	C  'LIT' DATA WILL ALWAYS PRINT.
36200		NPA=NPA-1
36300		IF(NPA.GT.2)GO TO 6021
36400	5021	DO 1304 K=3,NPA
36500	1304	COPY(K)=P(K)
36600	1204	IF(PL4.NE.1.)GO TO 2170
36700		P4=P4*AMPFAC
36800		L=0
36900		INP(J)=P4
37000		DO 1021	K=1,NINS
37100	1021	IF(P1(K).GT.PP1)L=L+INP(K)
37200		IF(L-IAMP-1)GO TO 2170
37300		IAMP=L
37400		AMPTIM=PP1
37500	2170	IF(MX.EQ.3)GO TO 2612
37600	C ********* MAY 17,71
37700	      PP1=PP1-OP1     
37800	C   PUTS SPACES BETWEEN NOTES .GT. .05( APART
37900		IF(MZ.NE.-1)GO TO 5170
37950		IF(A.GE.PP1)GO TO 5170
38000		IF(INONLY)WRITE(JOUT,902)
38100		A=PP1+.05
38200	5170	ML=10
38300		IF(NPA.LT.10)ML=NPA
38400		MLX=3
38500		NL=2
38600		IF(INVIS(J).EQ.0)GO TO 3170
38700		LK=0
38800	C  NEEDED TO INIT INVISIBLE MODE PRINT-OUT (NO INST NAME, P1, P2)
38900	C  NEXT CREATES FORMAT DATA IN IFM ARRAY.
39000	31701	KL=3
39100		GO TO 4170
39200	3170	IF(J.EQ.INONLY)GO TO 775
39250		IF(.NOT.INONLY)GO TO 2612
39300	775	VX(1)=PP1
39400		IF(DF.GT.0)GO TO 6170
39500		VX2=-DF
39600		IF(VX2.GT.PP2)VX2=PP2
39700	C NEG. DF=FIXED NOTE DUR. NOT.GT.PP2   7/74 COLGATE  -AND BELOW
39800		GO TO 7170
39900	6170	IF(DF.LT.100)GO TO 8170
40000	C DF>100 = FIXED REST AREA BEFORE NEXT ATTACK.
40100		VX2=PP2-DF+100.
40200		IF(VX2.LE.0)VX2=PP2/2.
40300	C NO NEG. TIME VALUES ALLOWED.
40400		GO TO 7170
40500	8170	VX2=PP2*DF
40600	7170	IFM3='F9.3,'
40700		IFM4=IFM3
40800		KL=5
40900		IF(NPA.LT.3)GO TO 2121
41000	
41100	4170	NL=2
41200		DO 1121 K=MLX,ML
41300		X=P(K)
41400		L=PL(K)
41500		IF(L-2)321,521,621
41600	C  L=1 NUMBS,  =2 NOTES,FUNCS,  =3 LITS.
41700	321	IF(X.GE.0)GO TO 4211
41800		IFM(KL)=IFCOM
41900		NL=NL+1
42000		KL=KL+1
42100	4211	IFM(KL)='F9.3,'
42200	C   CREATES 'F9.3'
42300	421	VX(KL-NL)=X
42400		GO TO 1121
42500	521	IFM(KL)=IFM2
42600	C   CREATES '1XA5'
42700		LN=X
42800		VX(KL-NL)=SCAL(LN)
42900		GO TO 42
43000	621	IF(L.GT.3)GO TO 721
43100		VX(KL-NL)=X
43200	C ABOVE LETS A5 WD BE USED IN SUBR BY SETTING PL(N)=3.
43300	42	IFM(KL)=IFM2
43400		GO TO 1121
43500	721	LN=X
43600		IFM(KL)=I1X
43700		NL=NL+1
43800		DO 821 M=1,LN-L+1
43900		KL=KL+1
44000		IOUT(KL-NL)=IV(L-1+M)
44100	821	IFM(KL)=IA1
44200	1121	KL=KL+1
44300	
44400	C  NO MORE THAN 80 ITEMS IN FORMAT.
44500	2121	IF(KL.LE.80)GO TO 21211
44600	21212	FORMAT(' ERROR! TOO MANY LIT. ITEMS')
44700		TYPE 21212
44800	21211	DO 921 M=KL+1,80
44900	921 	IFM(M)=IBLA
45000		IFM(KL)=')'
45100		L=KL-NL-1
45200		IF(MX)WRITE(1,IFM)LK,(VX(K),K=1,L)
45300		IF(.NOT.MZ)GO TO 30210
45400		IF(ML.GE.NPA)IFM(KL)='$)'
45500		WRITE(JOUT,IFM),LK,(VX(K),K=1,L)
45600	30210	IF(ML.GE.NPA)GO TO 3021
45700		MLX=ML+1
45800		ML=ML+10
45900		IF(ML.GT.NPA)ML=NPA
46000		LK=IBLA
46100		GO TO 31701
46200	3021	IF(MX)WRITE(1,3616)INST(J),ICT
46300	30211	IF(MZ)WRITE(JOUT,8902),J,INST(J),ICT,BT
46400	2612      PP1=ZPAR     
46500	         GO TO 21 
46600	8902	FORMAT('+;<'I2,1XA5,I4,' >',F7.3)
46700	3616	FORMAT(';PRINT(P1);< ',A5,I4)
46800	C   PRINTS RESTS  
46900	2022	PP2=ABS(PP2)
47000	C   IN THIS VERSION TYPE 'R' FOR RESTS IN ANY PARAM BUT P2. 
47100	C   FOR RESTS IN SEQS. TYPE -DUR.   
47200	C   WHEN RANDOM RESTS ARE CHOSEN, SEQS. MISS NOTES.
47300	C    RAN RESTS ARE TOUCHED BY SUBROUTINES ONLY BY SETTING IREST!!
47400		INP(J)=0
47500		P1(J)=PP1+PP2
47600	C   STORES NEXT P1 TIME FOR THIS INST.
47700		IF((MZ.NE.-1).OR.(PP1.LT.OP1))GO TO 21   
47800	      X=PP1-OP1  
47900		IF(A.GE.X)GO TO 121
48000		WRITE(JOUT,902)
48100		A=X+.05
48200	121	IF(INONLY.OR.J.EQ.INONLY)WRITE(JOUT,1110),INST(J),X,PP2,
48300		1 J,INST(J),ICT
48400	21	PR=ABS(PR)
48500	      BG(J)=BT+PR 
48600	      IF(ICT.EQ.DUR(J)-10000.)GO TO 5174 
48700	      IF(BG(J).LT.DUR(J))GO TO 500  
48800	5174      BG(J)=19999. 
48900	      DO 3174 K=1,NINS  
49000	C   INSERTS CANT FOLLOW LAST REGULAR NOTE.
49100	C   (ADD REST IF INSERT AT END IS NEEDED.)    
49200	3174      IF(BG(K).LT.19999.)GO TO 500     
49300	      GO TO 175   
49400	C   CHOOSES INST WITH NEXT BEGIN TIME.    
49500	500      J=1   
49600		BW=BT
49700	      NL=NINS+KB
49800	      DO 22 K=2,NL
49900	22      IF(BG(J).GT.BG(K))J=K 
50000		IF(J.GT.NINS.OR.NINS.EQ.1)GO TO 3022
50100		J=1
50200		DO 5022 K=2,NINS
50300		X=P1(J)
50400		Y=P1(K)+.0001
50500	C  LOWEST NUMBERED INST WILL COME 1ST IF BG TIMES ARE VERY CLOSE
50600		IF(BG(J).EQ.19999.)X=19999.
50700		IF(BG(K).EQ.19999.)Y=19999.
50800	5022	IF(X.GT.Y)J=K
50900	C   ABOVE IS FOR ROUND-OFF PROBLEMS WITH 'TEMPO' AND 'CONDUCT'.
51000	3022      BT=BG(J)    
51100	      IF((BT.EQ.19999.).OR.(P1(J).GE.DURX))GO TO 175
51200		IF(CNT(J).GT.0)GO TO 1022
51300	      IF(CNT(J).EQ.0)P1(J)=0  
51400	      IF(CNT(J).EQ.-1)CNT(J)=0
51500	C   N.B. 'TF' CONTROLS BG TIME WHEN BG .GT. 0   
51600	1022      IF((BT.LT.T6).OR.(IT3.GT.1))GO TO 1108    
51700	      T4=T2 
51800	      T5=0  
51900	      T6=10000.   
52000	      GO TO 1108    
52100	1175	FORMAT('+',A5,'=',F7.3,2X,$)
52200	1109	FORMAT(' FINISH; < ',A5,'.DAT')
52300	1110	FORMAT(' <',A5,2F9.3,2X,'******* REST <'I2,1XA5,I4)
52400	1603  FORMAT(' AMPL. FACTOR=',F4.2,', P4 MAX.AMP.=',I4,', AT TIME'
52500		1,F8.3)
52600	175	IF(MZ)WRITE(JOUT,1109),ISLAC
52700		IF(MX.GE.0)GO TO 4175
52800		WRITE(1,1109),ISLAC
52900		END FILE 1
53000	603	FORMAT(' TOTAL DURS:  ',$)
53100	CC FOR COLGATE ONLY***4175	CALL ENDSUB
53200	C  CLEARS CNTL O --- IF YOU HAVE HIT IT.
53300	4175	WRITE(JOUT,1603),AMPFAC,IAMP,AMPTIM
53400		WRITE(JOUT,603)
53500	5175	DO 2175 K=1,NINS
53600		X=P1(K)-OP1
53700		IF(MZ)GO TO 6175
53800		TYPE 1175,INST(K),X
53900		GO TO 2175
54000	6175	WRITE(JOUT,1175),INST(K),X
54100	2175	CONTINUE
54200	3175	TYPE 1023,ISLAC,IXIN
54300	      CALL EXIT
54400	      END